package demo;

/**
 * @Auther: vanse(lc))
 * @Date: 2022/7/5-07-05-14:36
 * @Description：finalize作为终结对象条件的验证
 */
public class TerminationCondition {
    public static void main(String[] args) {
        new Book(true);
//        Book novel = new Book(true);
        //novel.checkIn(); 垃圾回收前签入
        new Book(true);
        // 强制进行终结操作 但是finallize方法并不总是执行 (gc不能保证一定垃圾回收 )
        // 此处可能调用1次 2次 或者不调用
        System.gc();
    }
}
class Book{
    boolean checkOut;
    Book(boolean checkOut){
        this.checkOut = checkOut;
    }
    void checkIn(){
        checkOut = false;
    }
    protected void finalize(){
        System.out.println("Book.finalize");
        if(checkOut){
            System.out.println("Error: checked out");
        }
    }
}
